Ich möchte einen Zweig sowohl lokal als auch remote löschen. Fehlgeschlagene Versuche, einen Remote-Zweig zu löschen $ git branch -d remotes / origin / bugfix Fehler: Zweig 'Fernbedienungen / Ursprung / Bugfix' nicht gefunden. $ git branch -d origin / bugfix Fehler: Zweig 'Ursprung / Bugfix' nicht gefunden. $ git branch -rd origin / bugfix Remote Branch Origin / Bugfix gelöscht (war 2a14ef7). $ git push alles aktuell $ git pull Von github.com:gituser/gitproject * [neuer Zweig] Bugfix -> Ursprung / Bugfix Schon aktuell. Was sollte ich anders machen, um den Zweig remotes / origin / bugfix sowohl lokal als auch remote erfolgreich zu löschen?
2020-12-07 13:11:33
1 2 Nächster Zusammenfassung $ git push -d$ git branch -d Beachten Sie, dass der Remote-Name in den meisten Fällen der Ursprung ist. In einem solchen Fall müssen Sie den Befehl wie folgt verwenden. $ git push -d origin Lokale Niederlassung löschen Verwenden Sie eine der folgenden Methoden, um den lokalen Zweig zu löschen: $ git branch -d branch_name $ git branch -D branch_name Hinweis: Die Option -d ist ein Alias für --delete, der den Zweig nur löscht, wenn er bereits vollständig in seinem Upstream-Zweig zusammengeführt wurde. Sie können auch -D verwenden, einen Alias für --delete --force, mit dem der Zweig "unabhängig von seinem zusammengeführten Status" gelöscht wird. [Quelle: man git-branch] Beachten Sie auch, dass git branch -d branch_name fehlschlägt, wenn Sie gerade sind in dem Zweig, den Sie entfernen möchten. Die Nachricht beginnt mit Fehler: Der Zweig 'Zweigstellenname' kann nicht gelöscht werden. Wenn ja, zuerst wechseln zu einem anderen Zweig, zum Beispiel: git checkout master. Remote-Zweig löschen [Aktualisiert am 8. September 2017] Ab Git v1.7.0 können Sie einen Remote-Zweig mit löschen $ git push - Löschen das könnte leichter zu merken sein als $ git push : Dies wurde in Git v1.5.0 hinzugefügt, "um einen Remote-Zweig oder ein Tag zu löschen." Ab Git v2.8.0 können Sie auch Git Push mit der Option -d als Alias für --delete verwenden. Daher bestimmt die von Ihnen installierte Git-Version, ob Sie die einfachere oder schwierigere Syntax verwenden müssen. Remote-Zweig löschen [Ursprüngliche Antwort vom 5. Januar 2010] Aus Kapitel 3 von Pro Git von Scott Chacon: Remote-Zweige löschen Angenommen, Sie sind mit einer Remote-Verzweigung fertig. Angenommen, Sie und Ihre Mitarbeiter sind mit einer Funktion fertig und haben sie in der Hauptniederlassung Ihrer Remote-Niederlassung (oder in der Verzweigung, in der sich Ihre stabile Codezeile befindet) zusammengeführt. Sie können einen Remote-Zweig mit der eher stumpfen Syntax git push [Remotename] löschen: [Zweig]. Wenn Sie Ihren Server-Fix-Zweig vom Server löschen möchten, führen Sie Folgendes aus: $ git push origin: serverfix An git@github.com: schacon / simplegit.git - [gelöschter] Serverfix Boom. Keine Zweige mehr auf Ihrem Server. Möglicherweise möchten Sie diese Seite lesen, da Sie diesen Befehl benötigen und wahrscheinlich die Syntax vergessen werden. Eine Möglichkeit, sich an diesen Befehl zu erinnern, besteht darin, die Syntax git push [remotename] [localbranch]: [remotebranch] abzurufen, die wir etwas früher besprochen haben. Wenn Sie den Teil [localbranch] weglassen, sagen Sie im Grunde: "Nehmen Sie nichts auf meine Seite und machen Sie es zu [remotebranch]." Ich habe git push origin: bugfix herausgegeben und es hat wunderbar funktioniert. Scott Chacon hatte Recht - ich möchte diese Seite mit einem Ohr versehen (oder praktisch ein Ohr, indem ich dies auf Stack Overflow beantworte). Dann sollten Sie dies auf anderen Maschinen ausführen # Änderungen von allen Fernbedienungen abrufen und lokal löschen # Remote gelöschte Zweige / Tags usw. # --prune erledigt den Job: -; git fetch --all --prune Veränderungen zu verbreiten. | Matthews Antwort ist großartig, um entfernte Zweige zu entfernen, und ich schätze auch die Erklärung, aber um eine einfache Unterscheidung zwischen den beiden Befehlen zu treffen: So entfernen Sie einen lokalen Zweig von Ihrem Computer: git branch -d {the_local_branch} (verwenden Sie stattdessen -D, um das Löschen des Zweigs zu erzwingen, ohne den zusammengeführten Status zu überprüfen.) So entfernen Sie einen Remote-Zweig vom Server: git push origin --delete {the_remote_branch} Referenz: Git: Lösche einen Zweig (lokal oder remote) | Die kurzen Antworten Wenn Sie detailliertere Erklärungen zu den folgenden Befehlen wünschen, lesen Sie die langen Antworten im nächsten Abschnitt. Remote-Zweig löschen git push origin --delete # Git Version 1.7.0 oder neuer git push origin -d # Kürzere Version (Git 1.7.0 oder neuer) git push origin: # Git-Versionen älter als 1.7.0 Lokalen Zweig löschen Git Branch - löschen Git Branch -d # Kürzere Version git branch -D # Nicht zusammengeführte Zweige erzwingen, löschen Löschen eines lokalen Remote-Tracking-Zweigs git branch --delete --remotes / git branch -dr / # Kürzer git fetch --prune # Löscht mehrere veraltete Remote-Tracking-Zweige git fetch -p # Kürzer Die lange Antwort: Es gibt drei verschiedene Zweige zum Löschen! Beachten Sie beim Löschen von Zweigen sowohl lokal als auch remote, dass drei verschiedene Zweige betroffen sind: Der lokale Zweig X. Der Remote-Ursprungszweig X. Der lokale Remote-Tracking-Zweigursprung / X, der den Remote-Zweig X verfolgt. Das verwendete Originalplakat: Git Branch -rd Ursprung / Bugfix Dadurch wurde nur sein lokaler Remote-Tracking-Zweigursprung / Bugfix gelöscht und nicht der eigentliche Remote-Zweig-Bugfix am Ursprung. Um diesen tatsächlichen Remote-Zweig zu löschen, benötigen Sie Git Push Origin - Bugfix löschen Zusätzliche Details In den folgenden Abschnitten werden zusätzliche Details beschrieben, die beim Löschen Ihrer Remote- und Remote-Tracking-Zweige zu berücksichtigen sind. Durch Drücken zum Löschen von Remote-Zweigen werden auch Remote-Tracking-Zweige entfernt Beachten Sie, dass Sie den Remote-Zweig X aus der Befehlszeile löschenWenn Sie einen Git-Push verwenden, wird auch der lokale Ursprung / X des Remote-Tracking-Zweigs entfernt, sodass es nicht erforderlich ist, den veralteten Remote-Tracking-Zweig mit git fetch --prune oder git fetch -p zu bereinigen. Es würde jedoch nicht schaden, wenn Sie es trotzdem tun würden. Sie können überprüfen, ob der Ursprung / X des Remote-Tracking-Zweigs ebenfalls gelöscht wurde, indem Sie Folgendes ausführen: # Nur Remote-Tracking-Zweige anzeigen Git Branch - Fernbedienungen Git Branch -r # Zeigen Sie sowohl streng lokale als auch Remote-Tracking-Zweige an Git Branch - alle Git-Zweig -a Bereinigen des veralteten lokalen Remote-Tracking-Zweigursprungs / X. Wenn Sie Ihren Remote-Zweig X nicht über die Befehlszeile gelöscht haben (wie oben), enthält Ihr lokales Repository weiterhin (einen inzwischen veralteten) Remote-Tracking-Zweigursprung / X. Dies kann beispielsweise passieren, wenn Sie einen Remote-Zweig direkt über die GitHub-Weboberfläche gelöscht haben. Ein typischer Weg, um diese veralteten Remote-Tracking-Zweige (seit Git Version 1.6.6) zu entfernen, besteht darin, git fetch einfach mit --prune oder kürzer -p auszuführen. Beachten Sie, dass dadurch alle veralteten lokalen Remote-Tracking-Zweige für alle Remote-Zweige entfernt werden, die auf der Remote nicht mehr vorhanden sind: git fetch origin --prune git fetch origin -p # Kürzer Hier ist das relevante Zitat aus den Versionshinweisen zu 1.6.6 (Schwerpunkt Mine): "git fetch" lernte --all und --multipleoptions, um fetch von auszuführen viele Repositorys und die Option --prune zum Entfernen der Fernverfolgung Äste, die abgestanden wurden. Diese machen "git remote update" und "git" Remote-Bereinigung "weniger notwendig (es ist nicht geplant," Remote zu entfernen) Update "noch" Remote Prune "). Alternative zum oben genannten automatischen Bereinigen für veraltete Fernverfolgungszweige Anstatt Ihre veralteten lokalen Remote-Tracking-Zweige über git fetch -p zu bereinigen, können Sie alternativ den zusätzlichen Netzwerkbetrieb vermeiden, indem Sie die Zweige einfach manuell mit den Flags --remote oder -r entfernen: git branch --delete --remotes origin / X. Git Branch -dr Ursprung / X # Kürzer Siehe auch Git-Branch (1) Handbuch Seite. git-fetch (1) Handbuchseite. Pro Git § 3.5 Git-Verzweigung - Remote-Verzweigungen. | Schritte zum Löschen eines Zweigs: So löschen Sie den Remote-Zweig: git push origin --delete Zum Löschen des lokalen Zweigs haben Sie drei Möglichkeiten: 1: git branch -D 2: git branch --delete --force # Wie -D 3: git branch --delete # Fehler beim Aufheben der Zusammenführung Erklären Sie: OK, erklären Sie einfach, was hier los ist! Machen Sie einfach git push origin - löschen Sie, um nur Ihren Remote-Zweig zu löschen, fügen Sie am Ende den Namen des Zweigs hinzu. Dadurch wird dieser gelöscht und gleichzeitig an den Remote-Zweig gesendet ... Außerdem Git-Zweig -D, der einfach nur den lokalen Zweig löscht! ... -D steht für --delete --force, wodurch der Zweig gelöscht wird, auch wenn er nicht zusammengeführt wurde (erzwinge das Löschen). Sie können jedoch auch -d verwenden, das für --delete steht und einen Fehler bezüglich des Status des Zusammenführens des Zweigs auslöst ... Ich erstelle auch das Bild unten, um die Schritte zu zeigen: | Sie können den Remote-Zweig auch wie folgt löschen git push - Ursprungsserverfix löschen Welches macht das gleiche wie Git Push Ursprung: Serverfix aber es kann einfacher sein, sich zu erinnern. | Tipp: Wenn Sie Zweige mit löschen git branch -d # Löscht den lokalen Zweig oder git push origin: # Löscht den Remote-Zweig Nur die Referenzen werden gelöscht. Obwohl der Zweig tatsächlich auf der Fernbedienung entfernt wurde, sind die Verweise darauf in den lokalen Repositorys Ihrer Teammitglieder vorhanden. Dies bedeutet, dass für andere Teammitglieder die gelöschten Zweige weiterhin sichtbar sind, wenn sie einen Git-Zweig -a ausführen. Um dies zu lösen, können Ihre Teammitglieder die gelöschten Zweige mit beschneiden git remote prune Dies ist in der Regel git Remote Prune Ursprung. | Wenn Sie einen Zweig löschen möchten, checken Sie zuerst in den anderen Zweig als den zu löschenden Zweig aus. git checkout other_than_branch_to_be_deleted Löschen des lokalen Zweigs: Git Branch -D Branch_to_be_deleted Remote-Zweig löschen: git push origin --delete branch_to_be_deleted | Git-Zweig -D Git-Zweig -D -r Ursprung / Git Push Ursprung: | Dies ist einfach: Führen Sie einfach den folgenden Befehl aus: Um einen Git-Zweig sowohl lokal als auch remote zu löschen, löschen Sie zuerst den lokalen Zweig mit diesem Befehl: Git Branch -d Beispiel (Hier ist Beispiel der Filialname.) Löschen Sie anschließend den Remote-Zweig mit diesem Befehl: Git Push Ursprung: Beispiel | Es ist sehr einfach: So löschen Sie den Remote-Zweig git push -d origin Oder Git Push Ursprung: Lokalen Zweig zwangsweise löschen Git-Zweig -D | Ein anderer Ansatz ist: Git Push - Prune Herkunft WARNUNG: Dadurch werden alle Remote-Zweige gelöscht, die lokal nicht vorhanden sind. Oder umfassender, Git Push - Spiegel Das Remote-Repository sieht effektiv wie die lokale Kopie des Repositorys aus (lokale Köpfe, Fernbedienungen und Tags werden auf dem Remote-Repository gespiegelt). | Ich verwende Folgendes in meinen Bash-Einstellungen: alias git-shot = "git pushHerkunft - löschen " Dann können Sie anrufen: Git-Shoot Branchenname | Lokal löschen: Um einen lokalen Zweig zu löschen, können Sie Folgendes verwenden: Git-Zweig -d Verwenden Sie -D anstelle von -d, um einen Zweig zwangsweise zu löschen. Git-Zweig -D Remote löschen: Es gibt zwei Möglichkeiten: git push origin: branchname git push origin - Branchenname löschen Ich würde vorschlagen, dass Sie den zweiten Weg verwenden, da er intuitiver ist. | Seit Januar 2013 hat GitHub auf Ihrer Seite "Zweige" neben jedem Zweig die Schaltfläche "Zweig löschen" eingefügt. Relevanter Blog-Beitrag: Zweige erstellen und löschen | Wenn Sie beide Schritte mit einem einzigen Befehl ausführen möchten, können Sie einen Alias dafür erstellen, indem Sie Folgendes zu Ihrer ~ / .gitconfig hinzufügen: [alias] rmbranch = "! f () {git branch -d $ {1} && git push origin --delete $ {1};}; f" Alternativ können Sie dies über die Befehlszeile mit zu Ihrer globalen Konfiguration hinzufügen git config --global alias.rmbranch \ '! f () {git branch -d $ {1} && git push origin --delete $ {1}; }; f ' HINWEIS: Bei Verwendung von -d (Kleinbuchstabe d) wird der Zweig nur gelöscht, wenn er zusammengeführt wurde. Um das Löschen zu erzwingen, müssen Sie -D (Großbuchstabe D) verwenden. | So löschen Sie Ihre Filiale lokal und remote Checkout to Master Branch - Git Checkout Master Löschen Sie Ihren Remote-Zweig - git push origin - lösche Löschen Sie Ihren lokalen Zweig - Git-Zweig - Löschen Sie | Sie können dies auch mit git remote prune origin tun $ git Remote Prune Origin Schnittursprung URL: git@example.com/yourrepo.git * [beschnitten] Herkunft / einige Zweige Es beschneidet und löscht Remote-Tracking-Zweige aus einem Git-Zweig -r-Eintrag. | Zusätzlich zu den anderen Antworten verwende ich häufig das Tool git_remote_branch. Es ist eine zusätzliche Installation, bietet Ihnen jedoch eine bequeme Möglichkeit, mit Remote-Zweigen zu interagieren. In diesem Fall zum Löschen: grb Zweig löschen Ich finde, dass ich auch die Befehle "Veröffentlichen" und "Verfolgen" ziemlich oft verwende. | Ein einzeiliger Befehl zum Löschen sowohl lokaler als auch entfernter Dateien: D = Filialname; Git-Zweig -D $ D; Git Push Ursprung: $ D. Oder fügen Sie den folgenden Alias zu Ihrer ~ / .gitconfig hinzu. Verwendung: git kill branch-name [alias] kill = "! f () {git branch -D" $ 1 "; git push origin --delete" $ 1 ";}; f" | Zweige löschen Nehmen wir an, unsere Arbeit am Zweig "Kontaktformular" ist abgeschlossen und wir haben es bereits in "Master" integriert. Da wir es nicht mehr brauchen, können wir es (lokal) löschen: $ git branch -d Kontaktformular Und zum Löschen des Remote-Zweigs: git push origin - Kontaktformular löschen | Remote-Zweig löschen Git Push Ursprung: Lokalen Zweig löschen Git Branch -D Lokale Verzweigungsschritte löschen: Kasse zu einer anderen Filiale lokalen Zweig löschen | Sagen Sie einfach: Git Branch -d Git Push Ursprung: | git push origin --delete ist leichter zu merken als Git Push Ursprung: branchName | Jetzt können Sie dies mit der GitHub Desktop-Anwendung tun. Nach dem Start der Anwendung Klicken Sie auf das Projekt mit dem Zweig Wechseln Sie zu dem Zweig, den Sie löschen möchten Wählen Sie im Menü "Zweig" die Option "Veröffentlichung aufheben ...", um den Zweig von den GitHub-Servern zu löschen. Wählen Sie im Menü "Zweig" die Option "Zweigstellenname löschen" ... ", damit der Zweig von Ihrem lokalen Computer gelöscht wird (AKA der Computer, an dem Sie gerade arbeiten). | Lokal löschen - (normal) Git Branch -d my_branch Wenn sich Ihr Zweig in einem Umbasierungs- / Zusammenführungsfortschritt befindet und dies nicht ordnungsgemäß durchgeführt wurde, bedeutet dies, dass Sie eine Fehlermeldung erhalten, Rebase / Zusammenführung in Bearbeitung. In diesem Fall können Sie Ihren Zweig also nicht löschen. Entweder müssen Sie das Umbasieren / Zusammenführen lösen. Andernfalls können Sie das Löschen erzwingen, indem Sie Folgendes verwenden: Git Branch -D my_branch So löschen Sie in der Ferne: git push --delete origin my_branch Sie können dasselbe tun mit: git push origin: my_branch # Leicht zu merken, dass beide dasselbe tun. Grafische Darstellung: | Dies funktioniert nicht, wenn Sie ein Tag mit demselben Namen wie der Zweig auf der Fernbedienung haben: $ git push origin: Zweig- oder Tag-Name Fehler: dst refspec Zweig- oder Tagname stimmt mit mehr als einem überein. Fehler: Einige Refs konnten nicht an 'git@github.com: SomeName / some-repo.git' gesendet werden. In diesem Fall müssen Sie angeben, dass Sie den Zweig und nicht das Tag löschen möchten: Git Push Ursprung: Refs / Heads / Branch-or-Tag-Name Um das Tag anstelle des Zweigs zu löschen, würden Sie ebenfalls Folgendes verwenden: git push origin: refs / tags / branch-or-tag-name | Viele der anderen Antworten führen zu Fehlern / Warnungen. Dieser Ansatz ist relativ narrensicher, obwohl Sie möglicherweise noch den Git-Zweig -D branch_to_delete benötigen, wenn er beispielsweise nicht vollständig in some_other_branch zusammengeführt ist. git checkout some_other_branch Git Push Ursprung: branch_to_delete git branch -d branch_to_delete Remote-Bereinigung ist nicht erforderlich, wenn Sie den Remote-Zweig gelöscht haben. Es wird nur verwendet, um die aktuellsten Fernbedienungen in einem Repository abzurufen, das Sie verfolgen. Ich habe beobachtet, dass Git Fetch Fernbedienungen hinzufügt, nicht entfernt. Hier ist ein Beispiel dafür, wann Git Remote Prune Origin tatsächlich etwas bewirkt: Benutzer A.führt die obigen Schritte aus. Benutzer B würde die folgenden Befehle ausführen, um die aktuellsten Remote-Zweige anzuzeigen: Git holen Git Remote Prune Ursprung Git Branch -r | Ich hatte es satt, nach dieser Antwort zu googeln, also verfolgte ich einen ähnlichen Ansatz wie die Antwort, die crizCraig zuvor gepostet hatte. Ich habe meinem Bash-Profil Folgendes hinzugefügt: Funktion gitdelete () { git push origin - $ 1 löschen Git-Zweig -D $ 1 }} Jedes Mal, wenn ich mit einem Zweig fertig bin (z. B. in Master zusammengeführt), führe ich Folgendes in meinem Terminal aus: gitdelete my-branch-name ... der dann sowohl meinen Filialnamen als auch lokal aus dem Ursprung löscht. | Vor der Ausführung Git Branch - löschen Stellen Sie zunächst sicher, dass Sie den genauen Namen des Remote-Zweigs ermitteln, indem Sie Folgendes ausführen: git ls-remote Hier erfahren Sie, was Sie genau für den -Wert eingeben müssen. (Zweig unterscheidet zwischen Groß- und Kleinschreibung!) | Verwenden: git push origin: bugfix # Löscht den Remote-Zweig git branch -d bugfix # Lokale Verzweigung muss manuell gelöscht werden Wenn Sie sicher sind, dass Sie es löschen möchten, führen Sie es aus Git Branch -D Bugfix Um nun gelöschte Remote-Zweige zu bereinigen, laufen Git Remote Prune Ursprung | 1 2 Nächster Sehr aktive Frage. Verdiene 10 Reputationen, um diese Frage zu beantworten. Die Reputationsanforderung schützt diese Frage vor Spam und nicht beantworteten Aktivitäten. Nicht die Antwort, die Sie suchen? Durchsuchen Sie andere Fragen mit dem Tag git version-control git-branch git-push git-remote oder stellen Sie Ihre eigene Frage.